home *** CD-ROM | disk | FTP | other *** search
/ 2,000 Greater & Lesser Mysteries / 2,000 Greater and Lesser Mysteries.iso / computer / virus / mys00505.txt < prev    next >
Encoding:
Text File  |  1994-06-10  |  54.7 KB  |  1,575 lines

  1.        Comparison: Products to Detect Changes to Programs
  2.  
  3.                Prepared by David J. Stang, Ph.D.
  4.                      and (c) 1990, 1991 by
  5.            the National Computer Security Association
  6.               Suite 309, 4401-A Connecticut Ave NW
  7.                        Washington DC 20008
  8.                        Voice: 202-364-8252
  9.                         BBS: 202-364-1304
  10.  
  11. This document may be freely distributed, but may not be altered
  12. in any way.
  13.  
  14. This is a review of some of those checksum or CRC comparison
  15. programs. In it, I make an effort to concisely describe the 
  16. merits of this class of products, and then to help
  17. you in selecting a product from their ranks.
  18.  
  19. There is a difference between checksum algorithms and CRC --
  20. cyclic redundancy check -- algorithms. The latter usually uses a
  21. table, and is usually a bit slower than the former. Despite the
  22. differences, many authors seem to use the words
  23. interchangeably, and we will continue the sloppy practice in this
  24. chapter.
  25.  
  26. Each file has a unique  fingerprint in the form of a checksum
  27. or CRC. Changes in any character within the file likely change
  28. the checksum or CRC. If a file's original CRC is known --
  29. perhaps recorded in a file elsewhere -- and its current CRC is
  30. known, the two values can be compared. Any difference indicates
  31. that the file has been changed, and offers reason to investigate
  32. further. For example, DELOUSE allows you to build a list of
  33. critical system files that are normally subject to attack, and
  34. check them periodically for changes.
  35.  
  36. If a program's size is changed, it must be concluded that some
  37. modification has occured to the file. If the size has not changed,
  38. some modification is still possible. A file that contains the simple
  39. message  Hi Mom! could be modified so that it contained the
  40. message  Hi Dad!, and it would not show any change in size.
  41.  
  42. A much tougher test of whether a file has been modified is to
  43. compute the  checksum or CRC cyclic redundancy check. At
  44. this writing, there are no viruses able to modify a file without
  45. modifying the file's CRC. Thus any checksum checker will work
  46. just fine in catching viruses, providing that you use it to
  47. establish checksums before a virus has modified your files.
  48.  
  49. How is the checksum computed? Simply adding the values of all
  50. the characters in the file is not enough, as a file containing just
  51. "AE" would produce the same result as a file with just "EA".
  52. Rather, the first byte of a file is read, and an algorithm applied
  53. to it. This algorithm does something to the value of the byte,
  54. such as rotating the bits a certain number of times, and logically
  55. ANDING or ORING the bits to something else. The result of
  56. that algorithm is then applied to the next byte of the file. The
  57. process is repeated until the final byte is reached, and the
  58. remainder is recorded. During this process, different algorithms
  59. might be used for different portions of the code being processed.
  60. With most procedures, a small file produces a checksum value of
  61. the same size as a large file.
  62.  
  63. Is there such as thing as "the" CRC value? No. The algorithm
  64. used defines the result. There are two popular algorithms in use:
  65. a standard CCITT CRC and a popular XMODEM CRC. Consider
  66. COMMAND.COM for DOS 3.3 dated 2/2/88 and taking 25308
  67. bytes. Here are some of the checksums produced for this file by
  68. various programs. SSCRC and Validate (method 1) use the
  69. CCITT standard. All others in the list use some other approach.
  70.  
  71.     o    BSearch, 16-bit CRC - 13369 (3439 h)
  72.     o    BSearch, CRCTT - 10994 (2AC0 h)
  73.     o    CHKSUM - 20011 (4E2B h)
  74.     o    CRCDOS - 59676 (E91C h)
  75.     o    Delouse, method 1 - 1073916 (1062FC h)
  76.     o    Delouse, method 2 - 1067428 (1049A4 h)
  77.     o    Delouse, method 3 - 1048666 (10005A h)
  78.     o    The Detective, CRC 1 - 26939 (693B h)
  79.     o    The Detective, CRC 2 - 54914 (D682 h)
  80.     o    Module Integrity Check - 24922 (615A)
  81.     o    SSCRC - 52167 (CBC7 h) 
  82.     o    Validate, method 1 - 52167 (CBC7 h)
  83.     o    Validate, method 2 - 4024 (0FB8 h)
  84.     o    VCheck - 2141344 (0020ACA0 h)
  85.  
  86.  
  87.  
  88.                        WHY DETECT CHANGES?
  89.  
  90.  
  91.  
  92. There are several good reasons.
  93.  
  94.     o  Viruses have great difficulty infecting your machine
  95.          without making some change in it. To detect a change
  96.          is to begin the process of detecting a virus. Although
  97.          some are concerned that a change-detecting program
  98.          cannot prove there isn't already a virus in your
  99.          computer, the fact is that you needn't worry about this.
  100.          If you infect your computer with a dozen viruses, then
  101.          measure its state, one of these viruses will change that
  102.          state in the next hour or so; a remeasurement
  103.          establishes that something is afoot.
  104.  
  105.     o  Occasionally things go wrong with computer hardware
  106.          and software. You run CHKDSK and discover a
  107.          number of lost clusters in a number of lost chains. You
  108.          scrap these clusters, but wonder what files you've lost.
  109.          A proper change-detection program will give you a list
  110.          of files deleted since your last run. You can then
  111.          restore them from your backups.
  112.  
  113.     o  In many organizations, we only want to permit the use
  114.          of "authorized software." Using a proper
  115.          change-detection program, you can establish what
  116.          software was added to the machine since your last run.
  117.          Any "extra" software will quickly come to your
  118.          attention.
  119.  
  120.  
  121.  
  122.                   CAN A VIRUS BEAT THE SYSTEM?
  123.  
  124.  
  125. The answer may be yes. You need to know how, so it doesn't
  126. happen to you. The defeat can come at the hands of a
  127. CRC-aware virus (none exists yet) or at the hands of a stealth
  128. virus (there are several now).
  129.  
  130.  
  131.  
  132.                         CRC-AWARE VIRUSES
  133.  
  134.  
  135. In theory, a virus could be written that would compute a file's
  136. CRC, add itself to the file, then replace additional characters
  137. from the file until the new CRC was the same as the old one.
  138. Such a virus would escape the attention of many checksum
  139. checkers.
  140.  
  141. Programs could catch such a virus by using an  incremental
  142. cyclic redundancy check approach. In this approach, files are
  143. dissected into randomly-sized blocks of data, using dynamic
  144. block size allocations that allow files as small as one byte to be
  145. accurately checked. CHECKUP uses this approach. It scans and
  146. compares every byte of the target files on a block-by-block basis.
  147. If the recorded file sizes, any of the block CRC comparisons, or
  148. the CRC totals do not match, CHECKUP alerts users that the
  149. target files have been altered.
  150.  
  151. Another approach to the problem is to compute the check in two
  152. different ways. For example, if both a checksum and a file size
  153. were to be calculated and recorded for later comparison, it is
  154. unlikely that a virus could be modified without mismatching on
  155. one of the comparisons. Or if checksums were to be calculated
  156. using two different algorithms, the virus would again likely fail
  157. to fool both techniques.
  158.  
  159. Thus if some future virus were to compute checksums prior to
  160. infections, pad their viral code with characters that maintain
  161. checksum integrity and then infect, CHECKUP could catch it.
  162.  
  163.  
  164.  
  165.                          STEALTH VIRUSES
  166.  
  167.  
  168. A stealth virus is able to defeat a checksum program if it loads
  169. into memory before the checksum program runs. The stealth
  170. virus can then detect the checksum program as it attempts to
  171. read each program on the disk, and before letting the checksum
  172. program see the file it is trying to read, extracting the virus
  173. from it. After the checksum program is satisfied that there is no
  174. virus in the file, the virus in memory can re-insert it into the
  175. file just checked.
  176.  
  177. Such a problem can be easily avoided: simply boot the system
  178. from an uninfected floppy, then run your checksum program
  179. from it.
  180.  
  181. In the tables presented here, space has been provided for you to
  182. rate an additional product.
  183.  
  184.  
  185.  
  186.                        PRODUCT COMPARISONS
  187.  
  188.  
  189.  
  190.  
  191.                            EASE OF USE
  192.  
  193.  
  194. Conducting these evaluations was not easy. In the table below, I
  195. record my joy or frustration in trying to master the program.
  196.  
  197.     Alert
  198.  
  199.          This program makes claims of ease of use, with a
  200.          pop-up, drop-down menus, mouse support, nifty sound
  201.          effects, and the like. But the blinking text on the
  202.          screen will certainly drive you crazy, if you are still
  203.          sane after waiting, Alert would like to run McAfee's
  204.          scan every time you add a file to the list it will check;
  205.          it doesn't accept wild cards, so if you thought you
  206.          would do a checksum on all of your files, assume that
  207.          you won't be able to install it in less than a week.
  208.          Installation and simple evaluation took 53 minutes.
  209.  
  210.     The Antibody Test
  211.  
  212.          Antibody's installation is extremely easy, if it works.
  213.          You cannot simply copy the files to your hard disk --
  214.          you must let Antibody do it for you. In the process,
  215.          Antibody wants to check the integrity of your
  216.          distribution disk. If you have any alien file on this
  217.          disk, Antibody will abort after 3 or 4 minutes of
  218.          self-examination. Beat the system by clearing the
  219.          read-only and hidden attributes of SIGNATURE.DAT,
  220.          then rename it. Antibody will create a new file for you
  221.          and proceed. The manual includes a comprehensive list
  222.          of error messages and their meanings.
  223.  
  224.     BSearch
  225.  
  226.          No installation required! Copy BSEARCH.EXE to
  227.          anywhere on your hard disk, and run it with the
  228.          obvious wildcards. For example, BSEARCH C:\*.* will
  229.          examine everything.
  230.  
  231.     CHKSUM
  232.  
  233.          Simply copy to anywhere on your hard disk and enter
  234.          "CHKSUM". You'll be prompted for what you should
  235.          have entered.
  236.  
  237.     Checkup
  238.  
  239.          The most difficult of all the packages reviewed here.
  240.          Documentation spans five files, and numbers almost
  241.          100 pages. With such a mass of instructions, you are
  242.          unlikely to have any success in installing the program.
  243.          The verbosity extends to the log file, which you can
  244.          create to record any file mismatches. The log file for a
  245.          single run on 183 files was 270K - nearly 2K per file.
  246.          Should you try to use the product on a large hard disk,
  247.          your log would be worthless.
  248.  
  249.     CRCDOS
  250.  
  251.          As with CHKSUM, simply copy to anywhere and go!
  252.          Instructions will appear on the screen if you simply
  253.          enter "CRCDOS."
  254.  
  255.     Delouse
  256.  
  257.          It took just four minutes to completely understand how
  258.          Delouse works and to begin building the file of CRC
  259.          values. Installation is nothing more than copying a few
  260.          files to anywhere on your hard disk. Delouse can also
  261.          be run from a floppy.
  262.  
  263.     The Detective
  264.  
  265.          Copy and go. When first run, the program pops up a
  266.          simple menu that works very well. You'll be asked
  267.          what drives to process and what file extensions to
  268.          check. Entering * will process everything. You'll be
  269.          asked if you also wish to scan for viruses (meaning to
  270.          compute CRCs) as you produce the file list for
  271.          subsequent checks. Also, The Detective keeps itself
  272.          up-to-date with each run. On every run, the most
  273.          recent signatures are copied to the "old" list, and new
  274.          signatures are computed for comparison.
  275.  
  276.     F-Prot
  277.  
  278.          Copy F-OSCHK to any location on your hard disk and
  279.          enter F-OSCHK. It will display five numbers which are
  280.          encrypted checksums of the partition table, boot record,
  281.          and three operating system files. AUTOEXEC.BAT can
  282.          then be given a line beginning with (path) F-OSCHK
  283.          and followed by these five values.
  284.  
  285.     FICHECK
  286.  
  287.          Seemingly easy to use. Can be run from a menu or as a
  288.          command line in a batch file. However documentation
  289.          for the command line operation is poor, and misleading.
  290.  
  291.     Module Integrity Check
  292.  
  293.          Copy the file MIC to anywhere on your hard disk and
  294.          enter MIC. There are no menus, nothing to select.
  295.          You'll create a list of CRCs, if none exists, in your root.
  296.          If one exists, it will be renamed "OLD", and another
  297.          will be created. The two will be automatically
  298.          compared. You'll be notified of any changes, any added
  299.          files, and any deleted files. You'll also be notified if
  300.          nothing has changed. All information is automatically
  301.          sent to reports in the root. Nothing could be simpler.
  302.  
  303.     Novirus
  304.  
  305.          Copy the program to anywhere on your hard disk, and
  306.          it makes a hidden file in the root containing what it
  307.          claims is encrypted CRC, file date, time, and size
  308.          information for each of the three system files.
  309.          Installation and use are very easy.
  310.  
  311.     SSCRC
  312.  
  313.          Very easy. Copy the file to your hard disk, and run the
  314.          program. Onscreen instructions tell you to enter /F to
  315.          create the File of CRCs or /C to Check files against
  316.          these CRCs. Requires ANSI.SYS
  317.  
  318.     Validate
  319.  
  320.          Very easy to use for finding the CRC of a single file.
  321.          Simply copy VALIDATE to your drive, and run it.
  322.          Impossible to use for checking the CRCs of all files, as
  323.          it does not work with a list, does not accept wildcards,
  324.          and will not compare current CRC with stored CRC.
  325.  
  326.     VCheck
  327.  
  328.          Fairly straightforward. You may need to follow the
  329.          example in the manual to guess the spacing required
  330.          for parameters in the command line. Results are
  331.          displayed on your screen, and you'll need to press a key
  332.          to continue scanning, after the screen fills. This
  333.          ensures you'll spot a surprise change in a file, but
  334.          doesn't deliver the kind of power that suits it for a
  335.          batch file. Not menu-driven.
  336.  
  337.     VirusGuard
  338.  
  339.          Simply type INSTALL. VirusGuard will install itself on
  340.          your hard disk and scan all COM and EXE files for
  341.          their signatures. It will also modify your
  342.          AUTOEXEC.BAT to automatically invoke RAMWATCH
  343.          on subsequent boots. Our copy of the program did not
  344.          come with documentation, however, so we are a bit
  345.          limited in our review here.
  346.  
  347.  
  348.  
  349.                       NUMBER OF TECHNIQUES
  350.  
  351.  
  352.  
  353. The program should compute checksums using two different
  354. approaches, or compute both file size and checksum, to ensure
  355. that a virus doesn't modify a file in such a way that the
  356. checksum isn't changed. Gilmore Systems has a program called
  357. PROVECRC that creates a modified version of a file that is
  358. different, but that has the same CRC as the original. The
  359. program proves that a single CRC is not fool-proof for virus
  360. detection, for it is possible to write a virus -- much like they
  361. wrote PROVECRC -- which can add code to your programs
  362. without changing the CRC. When two algorithms are used,
  363. PROVECRC creates changes undetected by one, but detected by
  364. the other.
  365.  
  366.     Alert
  367.  
  368.          Alert uses different algorithms on different portions of
  369.          each file. A file records the results of these algorithms
  370.          in encrypted form in a file which covers all of a group
  371.          of files you wish to check. It is very unlikely that any
  372.          virus author would have the interest or patience to
  373.          break the scheme.
  374.  
  375.     The Antibody Test
  376.  
  377.          Antibody lists all files added or deleted since the last
  378.          comparison, as well as showing any changes in size,
  379.          date, time, or attributes.
  380.  
  381.     BSearch
  382.  
  383.          Stores filenames (with paths), file sizes, 16-bit and
  384.          32-bit checksums in an indexed databases. Uses a
  385.          binary tree indexed database structure to store the files
  386.          quickly and allow even quicker searches and updates.
  387.  
  388.     CHKSUM
  389.  
  390.          Uses a single 16-bit checksum approach.
  391.  
  392.     Checkup
  393.  
  394.          Offers three different options for calculation:
  395.          table-driven incremental CRC, cumulative CRC, and
  396.          cumulative checksum.
  397.  
  398.     CRCDOS
  399.  
  400.          Uses a single 16-bit checksum approach.
  401.  
  402.     Delouse
  403.  
  404.          Uses three different checksum algorithms. All are
  405.          simple, but slightly different in the way they calculate
  406.          the checksum. One of these algorithms is chosen at
  407.          random when Delouse starts, and the method number
  408.          is recorded in a data file. You can force Delouse to
  409.          choose one of the three methods if you wish.
  410.  
  411.     The Detective
  412.  
  413.          Uses two different 16-bit CRC algorithms.
  414.  
  415.     F-Prot
  416.  
  417.          F-OSCHK uses just one algorithm.
  418.  
  419.     FICHECK
  420.  
  421.          FICHECK uses one 16-bit algorithm, MFICHECK uses
  422.          another. Both are bundled in the same package.
  423.  
  424.     Module Integrity Check
  425.  
  426.          Uses one 16-bit algorithm.
  427.  
  428.     Novirus
  429.  
  430.          Appears from testing that Novirus uses no checksum or
  431.          CRC algorithm, despite the claims of its
  432.          documentation. Using a sector editor, for instance, the
  433.          word "Microsoft" was changed to "Machosoft" in
  434.          COMMAND.COM. Novirus was unable to recognize
  435.          this. I changed the attributes of the hidden system
  436.          files, and again Novirus failed to detect the change. I
  437.          renamed COMMAND.COM, infected it with Jerusalem,
  438.          and renamed it to COMMAND.COM. Novirus
  439.          recognized the change, but only because of the
  440.          increased file size. When I used NU to reduce the size
  441.          of the infected file to its original size, as listed in the
  442.          root directory, Novirus did not recognize it as a
  443.          problem. It appears that no checksumming is done,
  444.          although this is claimed in the documentation. Checks
  445.          on file existence, date, size, and time do appear to be
  446.          done. For instance, I booted, deleted COMMAND.COM,
  447.          and ran Novirus. Novirus halted the system. It also
  448.          halted the system when I used NU to increase the size
  449.          of COMMAND.COM to 999999999. 
  450.  
  451.     SSCRC
  452.  
  453.          Uses one 16-bit CCITT CRC algorithm.
  454.  
  455.     Validate
  456.  
  457.          Uses two 16-bit algorithms, one of which is CCITT
  458.          CRC.
  459.  
  460.     VCheck
  461.  
  462.          Uses one 32-bit algorithm.
  463.  
  464.     VirusGuard
  465.  
  466.          Appears to use one algorithm. CRCs are encrypted.
  467.  
  468.  
  469.  
  470.                 SCANNING OF CRITICAL SYSTEM FILES
  471.  
  472.  
  473.  
  474. On an MS-DOS hard disk, there are five critical system files
  475. that are read during the boot process: the partition table, the
  476. boot record, two hidden system files, and COMMAND.COM.
  477. Because many viruses take up residence in the partition table,
  478. boot record, or COMMAND.COM, it may be desirable to check
  479. these files on each boot. Not all CRC programs, however, can
  480. check all of these files. Two points are awarded for each file it
  481. can check. Note that viruses rarely touch the two hidden system
  482. files, and many do not touch COMMAND.COM Quite a few,
  483. however, get into the partition table of the hard disk or boot
  484. record of floppies.
  485.  
  486.     Alert
  487.  
  488.          Alert cannot examine the partition table or boot record.
  489.          It can check the other three files.
  490.  
  491.     The Antibody Test
  492.  
  493.          Antibody does not check the partition table. It does
  494.          check the other four files automatically, however.
  495.  
  496.     BSearch
  497.  
  498.          Does not scan partition table or boot record.
  499.  
  500.     CHKSUM
  501.  
  502.          Does not scan partition table or boot record.
  503.  
  504.     Checkup
  505.  
  506.          Does not scan partition table or boot record.
  507.  
  508.     CRCDOS
  509.  
  510.          Does not scan partition table or boot record.
  511.  
  512.     Delouse
  513.  
  514.          Does not scan partition table or boot record.
  515.  
  516.     The Detective
  517.  
  518.          Does not scan partition table or boot record. Further,
  519.          the evaluation version (reviewed here) will not examine
  520.          anything in the root, which is certainly the two hidden
  521.          system files and likely COMMAND.COM.
  522.  
  523.     F-Prot
  524.  
  525.          F-OSCHK scans all five files.
  526.  
  527.     FICHECK
  528.  
  529.          Automatically checks the CRC of the partition table
  530.          and the boot record, and logs this along with available
  531.          disk space and FAT ID byte. For all files checked, logs
  532.          date, time, size, attributes, and CRC, and reports any
  533.          discrepancies. Checking of hidden system files,
  534.          COMMAND.COM, etc. is at user discretion.
  535.  
  536.     Module Integrity Check
  537.  
  538.          Does not scan partition table or boot record.
  539.  
  540.     Novirus
  541.  
  542.          Does not scan partition table or boot record.
  543.  
  544.     SSCRC
  545.  
  546.          Does not scan partition table or boot record.
  547.  
  548.     Validate
  549.  
  550.          Does not scan partition table or boot record.
  551.  
  552.     VCheck
  553.  
  554.          Does not scan partition table or boot record.
  555.  
  556.     VirusGuard
  557.  
  558.          Does not scan partition table or boot record.
  559.  
  560.  
  561.  
  562.                 COMPLEXITY OF CHECKING ALGORITHM
  563.  
  564.  
  565.  
  566. A 32-bit CRC is potentially harder for a virus to beat than a
  567. 32-bit CRC; a pair of calculations is harder than a single
  568. calculation. In this table, 10 points are awarded for the use of a
  569. 32-bit CRC or two 16-bit CRCs; 5 points for a single 16-bit CRC;
  570. 0 for no CRC.
  571.  
  572.     Alert
  573.  
  574.          Algorithm is not discussed in the documentation.
  575.          However, the encrypted CRC for just one file is 748
  576.          bytes - about 5% of the checked file's length. This
  577.          suggests that the algorithm is essentially unbreakable.
  578.  
  579.     The Antibody Test
  580.  
  581.          Algorithm is not discussed in the documentation.
  582.          However, the encrypted CRC for just each file is 128
  583.          bytes. This suggests that the algorithm is essentially
  584.          unbreakable.
  585.  
  586.     BSearch
  587.  
  588.          Performs both 16-bit and 32-bit checksums.
  589.  
  590.     CHKSUM
  591.  
  592.          Performs CRC-16 -- 16 bit cyclic redundancy check.
  593.  
  594.     Checkup
  595.  
  596.          Performs CRC-16 -- 16 bit cyclic redundancy check.
  597.          Results are encrypted.
  598.  
  599.     CRCDOS
  600.  
  601.          Performs CRC-16 -- 16 bit cyclic redundancy check.
  602.  
  603.     Delouse
  604.  
  605.          Performs CRC-16 -- 16 bit cyclic redundancy check.
  606.  
  607.     The Detective
  608.  
  609.          Performs both 16-bit and 32-bit cyclic redundancy
  610.          checks.
  611.  
  612.     F-Prot
  613.  
  614.          Not described in documentation. Encrypts recorded
  615.          checksums. Uses only one algorithm.
  616.  
  617.     FICHECK
  618.  
  619.          Computes CRC with FICHECK, modified CRC with
  620.          MFICHECK. You can run both, if you wish, to defeat
  621.          any imaginary virus that is able to defeat one of these
  622.          approaches.
  623.  
  624.     Module Integrity Check
  625.  
  626.          Computes a checksum on part of the file. Uses only one
  627.          algorithm.
  628.  
  629.     Novirus
  630.  
  631.          Does not appear to do any CRC/checksum computation.
  632.  
  633.     SSCRC
  634.  
  635.          Uses only one algorithm -- a 16-bit CCITT standard
  636.          CRC.
  637.  
  638.     Validate
  639.  
  640.          Uses two 16-bit algorithms, one of which is CCITT
  641.          CRC.
  642.  
  643.     VCheck
  644.  
  645.          Uses one 32-bit algorithm.
  646.  
  647.     VirusGuard
  648.  
  649.          Unknown.
  650.  
  651.  
  652.  
  653.                   SPEED WHEN CHECKING ALL FILES
  654.  
  655.  
  656.  
  657. From time to time, it may be desirable to check all files on the
  658. hard disk for changes. However, if this process takes a long
  659. time, users will not do it as often as they should. What is the
  660. speed of checking files?
  661.  
  662. For our tests, we did CRC calculations on a 20Mb hard disk in a
  663. 12Mhz XT. The XT had a Norton SI of 1.8 for its computing
  664. index, and 1.4 for its disk index, an overall performance index of
  665. 1.6 that of an IBM XT. It had a total of 2.3 Mb in 134 files in 19
  666. directories. In each case, the checksum program was run from a
  667. floppy. Timing was done with a shareware program called
  668. TIMER. Numbers reported here are per file. Since it is not the
  669. number of files, but the number of bytes, that determines the
  670. overall speed of operation, your times will vary if your files are
  671. larger or smaller, on average, than those in the test suite. Our
  672. average file was 18,651 bytes. So to say that scanning files took
  673. about 2 seconds a piece is to say that the program could scan
  674. 9,325 bytes per second. A 20 Mb hard disk, full to the brim,
  675. would take such a program 37 minutes to scan fully. If you
  676. restricted the program to COM, EXE, OVL, BIN, SYS, and other
  677. executable files (an intelligent restriction), you might cut this
  678. time in half or more.
  679.  
  680.     Alert
  681.  
  682.          I could not imagine waiting while Alert checked all
  683.          files on the hard disk. Scanning just one file took 13.5
  684.          seconds. Checking the 2.3 Mb on the test hard disk
  685.          would have taken about 17.5 minutes. This is
  686.          unacceptable.
  687.  
  688.     The Antibody Test
  689.  
  690.          Antibody is slow, but not as slow as some of the others
  691.          tested here. It took 6 minutes, 14 seconds to scan all
  692.          programs on the hard disk -- 71 files, about 5 seconds a
  693.          piece. 
  694.  
  695.     BSearch
  696.  
  697.          Building the initial database of all files -- including
  698.          manuals and other files -- took BSearch 10 minutes, 35
  699.          seconds -- about 4.7 seconds each. Then scanning
  700.          against this file took 10 minutes, 20 seconds -- about
  701.          4.6 seconds each.
  702.  
  703.     CHKSUM
  704.  
  705.          To compare the three DOS files with CRCs previously
  706.          computed took 5.6 seconds, about 1.9 seconds each.
  707.          Testing everything in the root took 13 seconds for 8
  708.          files, about 1.6 seconds each. 
  709.  
  710.     Checkup
  711.  
  712.          To build a list of CRCs for 183 files took 9 minutes, 16
  713.          seconds, about 3 seconds each. It took 8 minutes, 35
  714.          seconds to use the author's proprietary "enhanced"
  715.          CRCs, about 2.8 seconds each. Using the checksum
  716.          approach took about 2.8 seconds each. 
  717.  
  718.     CRCDOS
  719.  
  720.          To build a list of CRCs for 146 files, CRCDOS took 6
  721.          minutes 27 seconds, about 2.6 seconds each. Testing
  722.          everything on this list took 6 minutes, 24 seconds,
  723.          again about 2.6 seconds each.
  724.  
  725.     Delouse
  726.  
  727.          To build a list of CRCs for 146 files, Delouse took 2
  728.          minutes 38 seconds, about 1.1 seconds each. Testing
  729.          everything on this list took 2 minutes, 35 seconds,
  730.          again about 1.1 seconds each.
  731.  
  732.     The Detective
  733.  
  734.          To build a list of CRCs for 146 files, The Detective took
  735.          3 minutes 57 seconds, about 1.6 seconds each. Testing
  736.          everything on this list took exactly the same length of
  737.          time.
  738.  
  739.     F-Prot
  740.  
  741.          Scans five system files in 10.0 seconds, 2 seconds per
  742.          file. However, F-OSCHK cannot be made to calculate
  743.          checksums on any files but these.
  744.  
  745.     FICHECK
  746.  
  747.          To build a list of CRCs for 146 files, FICHECK took 5
  748.          minutes 27 seconds, about 2.2 seconds each. Testing
  749.          everything on this list took 5 minutes, 24 seconds,
  750.          again about 2.2 seconds each.
  751.  
  752.     Module Integrity Check
  753.  
  754.          To build a list of CRCs for 146 files, MIC took only 1
  755.          minute 30 seconds, about .6 seconds each! Testing
  756.          everything on this list took the same length of time.
  757.          The program achieves this blazing speed by performing
  758.          a checksum only on the parts of the file that a virus is
  759.          likely to infect: the top and the bottom.
  760.  
  761.     Novirus
  762.  
  763.          Scans three system files in 1.54 seconds, .5 seconds per
  764.          file. However, cannot be made to check any files but
  765.          these, and does not appear to calculate checksums.
  766.  
  767.     SSCRC
  768.  
  769.          To build a list of CRCs for 146 files, SSCRC took 6
  770.          minutes 27 seconds, about 2.6 seconds each. Testing
  771.          everything on this list took 6 minutes, 10 seconds,
  772.          about 2.5 seconds each.
  773.  
  774.     Validate
  775.  
  776.          To validate a selected file requires issuing the validate
  777.          command for that file, then looking the result up
  778.          on-line, from a BBS in California. Minimum time
  779.          required: perhaps 3 minutes per file.
  780.  
  781.     VCheck
  782.  
  783.          To build a list of CRCs for 87 COM and EXE files,
  784.          VCheck took 1 minute 55 seconds, about 1.3 seconds
  785.          each. Testing everything on this list took 1 minutes, 25
  786.          seconds, about 1 second each.
  787.  
  788.     VirusGuard
  789.  
  790.          To build a list of CRCs for 87 COM and EXE files,
  791.          VirusGuard took 1 minute 39 seconds, about 1.2
  792.          seconds each. Testing everything on this list took 1
  793.          minute, 42 seconds, again about 1.2 seconds each.
  794.  
  795.  
  796.  
  797.                 EFFICIENCY IN CHECKING ALL FILES
  798.  
  799.  
  800.  
  801. Does the program permit checking of all files with some option
  802. such as "/ALL", or is it necessary to feed the program a list of
  803. all the files you wish checked? The latter approach can be
  804. grueling for any user with a large hard disk! Is there an upper
  805. limit to the number of files that can be checked? Is the program
  806. smart enough to check other logical drives, such as D:?
  807.  
  808.     Alert
  809.  
  810.          No. There does not seem to be any such efficiency
  811.          possible. The programwants to scan one file at a time,
  812.          and add one at a time to its list. Alert can only manage
  813.          a list of about 200 files. Alert does not know that
  814.          viruses do not inhabit documentation, and is likely to
  815.          begin by scanning its own manual! Creating a list to be
  816.          checked is very labor-intensive.
  817.  
  818.     The Antibody Test
  819.  
  820.          Antibody automatically scans the entire hard disk upon
  821.          installation. It can manage about 3900 file signatures.
  822.          Antibody ignores drives D:, E:, etc., however.
  823.  
  824.     BSearch
  825.  
  826.          There is no upper limit to the number of files that can
  827.          be checked. Ignores D:, E:. As with Antibody, BSearch
  828.          can be called from a batch file that scans specified
  829.          drives, directories. Output showing changes can be
  830.          routed to the printer, if this is desired. 
  831.  
  832.     CHKSUM
  833.  
  834.          Power is about equivalent to BSearch. You can do
  835.          almost anything with batch files, but you will need to
  836.          be a bit handy with an ASCII editor to do so. You'll
  837.          need to specify if you want CHKSUM to look at D: for
  838.          you. There is no limit on the number of files that can
  839.          be checked. Unlike BSearch, CHKSUM will not look at
  840.          subdirectories of the specified target, unless you tell it
  841.          to.
  842.  
  843.     Checkup
  844.  
  845.          Checkup simply processes everything on your hard
  846.          disk, and does not work from any input list. There is
  847.          no upper limit on the number of files that can be
  848.          scanned, other than your patience. Checkup is happy to
  849.          point out that files have been changed, when they
  850.          haven't been. This occurs because Checkup creates one
  851.          X.XUP for every file beginning with X. Thus the
  852.          signature for X.BAT is stored in X.XUPand the
  853.          signatures for X.COM, X.SYS, X.BAK, etc. are
  854.          compared with the contents of this file. With perhaps
  855.          10% of such "claims" wrong, you will lose patience with
  856.          it quickly. Checkup gets a 10 for efficiency, a 0 for
  857.          accuracy. 
  858.  
  859.     CRCDOS
  860.  
  861.          CRCDOS will process an ASCII list of files you give it,
  862.          a list you can create by entering CHKDSK *.* /v >>
  863.          filelist You can then feed CRCDOS this list with a
  864.          command such as CRCDOS -m crclist filelist. There is
  865.          no upper limit on the number of files that can be
  866.          scanned. D: and other drives are ignored unless
  867.          CRCDOS is told to work them over. Like CHKSUM,
  868.          CRCDOS will not automatically look at subdirectories
  869.          of the specified target, unless you tell it to.
  870.  
  871.     Delouse
  872.  
  873.          Much like CRCDOS. Delouse will process an ASCII list
  874.          of files you give it, a list you can create by
  875.          entering CHKDSK *.* /v >> delouse.dat You can then
  876.          feed Delouse this list with a command such as
  877.          DELOUSE MAKE. This creates a file DELOUSE.CHK
  878.          file, used during checking. To check, you enter
  879.          DELOUSE CHECK. There is no upper limit on the
  880.          number of files that can be scanned. D: and other
  881.          drives are ignored unless Delouse is told to work them
  882.          over. Like CHKSUM and CRCDOS, Delouse will not
  883.          automatically look at subdirectories of the specified
  884.          target, unless you tell it to.
  885.  
  886.     The Detective
  887.  
  888.          Intelligent menu-driven design. Prompts for drives, file
  889.          extensions. It is easier (and more sensible) to make it
  890.          simply check everything than to be selective.
  891.  
  892.     F-Prot
  893.  
  894.          Very efficient, but scans only the five system files.
  895.  
  896.     FICHECK
  897.  
  898.          Intelligent menu-driven design. Prompts for drives, file
  899.          extensions. It is easier (and more sensible) to make it
  900.          simply check everything than to be selective. Some
  901.          selectivity (with *.COM, *.EXE, etc.) is easy; other
  902.          selectivity (specific files) is harder to do.
  903.  
  904.     Module Integrity Check
  905.  
  906.          Checks all files automatically. Processes only the
  907.          current logical drive. Cannot be made to scan
  908.          selectively. Creates all reports, as disk files,
  909.          automatically. Because it is so fast, we award nearly
  910.          full points here.
  911.  
  912.     Novirus
  913.  
  914.          Cannot be made to check multiple drives. Cannot be
  915.          made to check files other than the three system files.
  916.  
  917.     SSCRC
  918.  
  919.          There is no upper limit to the number of files that can
  920.          be checked. Ignores D:, E:. As with Antibody and
  921.          BSearch, can be called from a batch file that scans
  922.          specified drives, directories. Output showing changes
  923.          can be routed to the printer, if this is desired. 
  924.  
  925.     Validate
  926.  
  927.          No. There does not seem to be any efficiency possible.
  928.          The programwants to scan one file at a time, and is
  929.          unable to compare its results with anything in a list of
  930.          recorded checksums.
  931.  
  932.     VCheck
  933.  
  934.          Checks all COM and EXE files automatically. Processes
  935.          whatever logical drive you specify on the command line.
  936.          Cannot be made to scan selectively. Cannot be made to
  937.          scan SYS, BIN, OVL, or other files that might become
  938.          infected. Creates all reports, as disk files,
  939.          automatically. 
  940.  
  941.     VirusGuard
  942.  
  943.          Checks all COM and EXE files automatically. Processes
  944.          whatever logical drive you specify on the command line.
  945.          Cannot be made to scan selectively. Cannot be made to
  946.          scan SYS, BIN, OVL, or other files that might become
  947.          infected. If a file is changed, the machine pauses
  948.          during signature checking, with the message "X.X has
  949.          been modified. Press F1 to acknowledge."
  950.  
  951.  
  952.  
  953.                USER CONTROL OF FILES TO BE CHECKED
  954.  
  955.  
  956.  
  957. Because checking all files can take some time, users may wish to
  958. provide the program with a list of files to be checked. Can this
  959. be done? Can the user use their text editor or other convenient
  960. tool to build the file list?
  961.  
  962.     Alert
  963.  
  964.          Yes. Users select those files they wish to check, via
  965.          menu. The menu system can be used to build a file list
  966.          for subsequent use. The file list is encrypted and not
  967.          editable with any program other than Alert, however.
  968.  
  969.     The Antibody Test
  970.  
  971.          No. Antibody cannot be given a short list. You may add
  972.          to its understanding of what should be checked, but
  973.          cannot subtract.
  974.  
  975.     BSearch
  976.  
  977.          You can only list by file type and directory. Thus you
  978.          can specify all COM files within each of 4 directories,
  979.          all EXEs within another 2 directories, etc. Each
  980.          instruction is offered on a separate command line, and
  981.          can be run from a batch file. The database cannot be
  982.          edited with most word processing programs, however.
  983.  
  984.     CHKSUM
  985.  
  986.          Building the list of files to check can be done easily by
  987.          redirecting the program's output (">>") to a file, then
  988.          editing this file into a batch file.
  989.  
  990.     Checkup
  991.  
  992.          No control.
  993.  
  994.     CRCDOS
  995.  
  996.          Extremely easy to use here. Hand CRCDOS a list of
  997.          files, and it builds a list of CRCs for those files. Hand
  998.          it this list, and it compares current and stored CRCs
  999.          for changes.
  1000.  
  1001.     Delouse
  1002.  
  1003.          A bit easier than CRCDOS, even, in that file names to
  1004.          scan and to compare are hard-coded, so the command
  1005.          line is simpler: you only need to enter "Delouse Make"
  1006.          or "Delouse Check"
  1007.  
  1008.     The Detective
  1009.  
  1010.          The user controls the drive(s) to check, and the file
  1011.          extensions to check, but cannot control the directories
  1012.          to check or provide a list of specific files.
  1013.  
  1014.     F-Prot
  1015.  
  1016.          The user can choose to not check any of the five system
  1017.          files. But the user cannot get F-OSCHK to scan any
  1018.          other files than these.
  1019.  
  1020.     FICHECK
  1021.  
  1022.          The user controls the drive(s) to check, and the file
  1023.          extensions to check, but cannot control the directories
  1024.          to check or provide a list of specific files.
  1025.  
  1026.     Module Integrity Check
  1027.  
  1028.          MIC is so fast that it doesn't make any sense to
  1029.          attempt to force it to scan selectively. Let it scan
  1030.          everything. You're done. MIC is certainly the easiest to
  1031.          use, most efficient of all the programs described in this
  1032.          chapter.
  1033.  
  1034.     Novirus
  1035.  
  1036.          Offers no control over the checking process. Takes only
  1037.          one command line - /I makes it start over with a new
  1038.          database of information on the three files.
  1039.  
  1040.     SSCRC
  1041.  
  1042.          Offers no control over the checking process other than
  1043.          permitting scan of a directory, rather than the entire
  1044.          drive.
  1045.  
  1046.     Validate
  1047.  
  1048.          You can make it scan any file in any directory. But
  1049.          scanning two files requires two commands. Not
  1050.          practical for real-life.
  1051.  
  1052.     VCheck
  1053.  
  1054.          Offers no control over the checking process other than
  1055.          permitting scan of a directory, rather than the entire
  1056.          drive.
  1057.  
  1058.     VirusGuard
  1059.  
  1060.          VirusGuard is so fast that it doesn't make any sense to
  1061.          attempt to force it to scan selectively. Let it scan
  1062.          everything. You're done. MIC is certainly the easiest to
  1063.          use, most efficient of all the programs described in this
  1064.          chapter.
  1065.  
  1066.  
  1067.  
  1068.                   ADDING SELF-CHECKING TO FILES
  1069.  
  1070.  
  1071.  
  1072. The most efficient approach to checking files is not to check only
  1073. critical files, or all files, but rather to check files as they are
  1074. run. This checking can be done with either code which is added
  1075. to each file, or with a memory-resident driver, that monitors file
  1076. access.
  1077.  
  1078. Adding code to a file is the idea of "vaccination." The file is
  1079. modified so that when it is run, control is first passed to the
  1080. appended code, which then calculates the checksum of the file
  1081. with the checksum that was stored in that file at the time of
  1082. vaccination. A failed comparison can result in an alert to the
  1083. user. 
  1084.  
  1085. There are a few drawbacks to the approach. It slows processing
  1086. a small amount, it enlarges each file a small amount, it may not
  1087. work on COM files that are nearly 64K in size, since 64K is the
  1088. largest size supported by the COM format; it cannot work with
  1089. BIN, SYS, and OVL files; it cannot work with archived,
  1090. self-extracting EXE files, and so on. While some authorities,
  1091. such as Rich Levin, view such approaches as substantially
  1092. flawed, we are unconvinced.
  1093.  
  1094.     Alert
  1095.  
  1096.          This feature is not offered.
  1097.  
  1098.     The Antibody Test
  1099.  
  1100.          This feature is not offered.
  1101.  
  1102.     BSearch
  1103.  
  1104.          This feature is not offered.
  1105.  
  1106.     CHKSUM
  1107.  
  1108.          This feature is not offered.
  1109.  
  1110.     Checkup
  1111.  
  1112.          This feature is not offered.
  1113.  
  1114.     CRCDOS
  1115.  
  1116.          This feature is not offered.
  1117.  
  1118.     Delouse
  1119.  
  1120.          This feature is not offered.
  1121.  
  1122.     The Detective
  1123.  
  1124.          This feature is not offered.
  1125.  
  1126.     F-Prot
  1127.  
  1128.          The F-Prot package includes F-XLOCK, a program that
  1129.          can make any other COM or EXE self-checking.
  1130.          Entering F-XLOCK *.* will protect all COM and EXE
  1131.          files in the current directory. When infected, the
  1132.          program will hang the system and report "THIS
  1133.          PROGRAM HAS BEEN INFECTED!" and the system
  1134.          hangs.
  1135.  
  1136.     FICHECK
  1137.  
  1138.          This feature is not offered.
  1139.  
  1140.     Module Integrity Check
  1141.  
  1142.          This feature is not offered.
  1143.  
  1144.     Novirus
  1145.  
  1146.          This feature is not offered.
  1147.  
  1148.     SSCRC
  1149.  
  1150.          This feature is not offered.
  1151.  
  1152.     Validate
  1153.  
  1154.          This feature is not offered.
  1155.  
  1156.     VCheck
  1157.  
  1158.          This feature is not offered.
  1159.  
  1160.     VirusGuard
  1161.  
  1162.          This feature is not offered.
  1163.  
  1164.  
  1165.  
  1166.              OPTIONAL SYSTEM LOCKUP ON DETECTION OF
  1167. MODIFICATION
  1168.  
  1169.  
  1170.  
  1171. Many things can modify a program: a virus, a hacker, an error
  1172. in using a sector editor. If a program has been modified, do you
  1173. want to try to run it? The smart money says no, let's stop right
  1174. now and see what has happened here. Running any program
  1175. that contains a virus is certain to spread the virus. It might be
  1176. desirable if the system is able to prevent any modified program
  1177. from running.
  1178.  
  1179.     Alert
  1180.  
  1181.          You are given ample warning about what files have
  1182.          been modified. The warning is both auditory and
  1183.          visual, and the screen requires you to press a key after
  1184.          reading what has happened. The warning may not be
  1185.          accurate, however. I swapped the names of two test
  1186.          files, and Alert was unable to find one, told me the
  1187.          other was the wrong size. Both, in fact, were where
  1188.          they had been, but were completely modified. Further,
  1189.          the warning on the screen tells the user to consult the
  1190.          manual, rather than telling the user what to do next.
  1191.  
  1192.     The Antibody Test
  1193.  
  1194.          The log shows what has changed, and how. Optionally,
  1195.          you may ask the program to display any text in any
  1196.          file which has been changed since the last check.
  1197.          However, there is no system lockup if a modification is
  1198.          detected, nor are there any audible warnings.
  1199.  
  1200.     BSearch
  1201.  
  1202.          The log shows what has changed, and how. There is no
  1203.          system lockup if a modification is detected. A faint beep
  1204.          can be heard when any change is detected.
  1205.  
  1206.     CHKSUM
  1207.  
  1208.          Upon detecting a changed file, CHKSUM beeps and
  1209.          displays a message. But it doesn't pause in its labors,
  1210.          and the result of a massive infection is likely to go
  1211.          scrolling off the screen. No lockup takes place on
  1212.          mismatches.
  1213.  
  1214.     Checkup
  1215.  
  1216.          The documentation indicates that the system can be set
  1217.          to lockup upon detection of a mismatch. We were not
  1218.          able to create this effect on our test machine, however.
  1219.          Further, although the documentation claims to permit
  1220.          production of a log file, we were not able to do this.
  1221.          Our copy was downloaded from the author's BBS.
  1222.  
  1223.     CRCDOS
  1224.  
  1225.          There is an extensive screen message whenever a
  1226.          change is detected, but the system does not beep. No
  1227.          lockup takes place on mismatches, either.
  1228.  
  1229.     Delouse
  1230.  
  1231.          There is a modest screen message whenever a change
  1232.          is detected, but the system does not beep. No lockup
  1233.          takes place on mismatches, either.
  1234.  
  1235.     The Detective
  1236.  
  1237.          You won't get a beep or message on the screen. A
  1238.          report, sent to disk or your printer, lists the files that
  1239.          have been added, deleted, or changed since the last run
  1240.          of The Detective. Far too subtle for most users.
  1241.  
  1242.     F-Prot
  1243.  
  1244.          If any of the programs in the F-Prot package becomes
  1245.          infected with any virus, or changed in any way, it
  1246.          reports "THIS PROGRAM HAS BEEN INFECTED!". If
  1247.          any program is protected with F-XLOCK, it will then
  1248.          hang the system.
  1249.  
  1250.     FICHECK
  1251.  
  1252.          You won't get a beep or message on the screen. A
  1253.          report, sent to disk or your printer, lists the files that
  1254.          have been added, deleted, or changed since the last run
  1255.          of FICHECK. Changes noted can include size, date,
  1256.          time, crc. If the report is not requested, or not
  1257.          requested correctly, or sent to disk, users may not
  1258.          become aware of virus-induced changes.
  1259.  
  1260.     Module Integrity Check
  1261.  
  1262.          You get several very nice reports, automatically placed
  1263.          in your root, showing files removed, added, and
  1264.          changed since the last run. If a file has been changed
  1265.          for any reason, MIC will tell you, and will tell you to
  1266.          read the change report.
  1267.  
  1268.     Novirus
  1269.  
  1270.          If Novirus does manage to find a problem with a
  1271.          change in the time, date, size or presence of one of your
  1272.          three system files, it will halt the system and display a
  1273.          full-screen warning message.
  1274.  
  1275.     SSCRC
  1276.  
  1277.          You won't hear a beep. You might see a notice go past
  1278.          on the screen when a changed file is found. At the end
  1279.          of the scan, you'll see a summary table, including a row
  1280.          showing number of files failing CRC. Their names are
  1281.          listed at the top of REPORT.CRC, placed in the root.
  1282.          Your batch file that invokes SSCRC could send this
  1283.          report to the printer, if you wished. There is no system
  1284.          lockup. We might want this less subtle.
  1285.  
  1286.     Validate
  1287.  
  1288.          Because Validate makes no comparison with
  1289.          pre-recorded CRCs, it cannot know if there is a
  1290.          problem with a file. It is happy to scan infected files
  1291.          and report their CRCs. 
  1292.  
  1293.     VCheck
  1294.  
  1295.          You won't hear a beep. You will see a list, on screen, of
  1296.          exactly which COM and EXE files have different CRCs
  1297.          or sizes. Their names can be listed in a report you
  1298.          create, which can be sent to the printer. There is no
  1299.          system lockup.
  1300.  
  1301.     VirusGuard
  1302.  
  1303.          No beeps. But you'll see the changed program listed on
  1304.          the screen, with the message that it has been modified.
  1305.          You'll need to tap a key to remove the message from
  1306.          the screen. There is no system lockup, and no hard
  1307.          copy report or file of changes is created.
  1308.  
  1309.  
  1310.  
  1311.                SELF-PROTECTION OF CHECKSUM PROGRAM
  1312.  
  1313.  
  1314.  
  1315. If a checksum program becomes infected, it then puts the virus
  1316. into memory before it begins to run. A stealth virus in memory
  1317. is able to remove itself from any file as the file is checksummed,
  1318. preventing the checker from finding the virus. Thus we need
  1319. some notification that the checksum program has been infected.
  1320. Ideally, the checker reports that it has been infected and quits
  1321. running.
  1322.  
  1323. To test this, we infected each checker with Jerusalem-B, and
  1324. tried running it.
  1325.  
  1326.     Alert
  1327.  
  1328.          Alert runs no worse with an infection than without one,
  1329.          and never seems to notice that it has become a carrier
  1330.          of Jerusalem. 
  1331.  
  1332.     The Antibody Test
  1333.  
  1334.          As with Alert, Antibody runs just fine after infection.
  1335.  
  1336.     BSearch
  1337.  
  1338.          As with Alert and Antibody, BSearch runs just fine
  1339.          with a Jerusalem infection.
  1340.  
  1341.     CHKSUM
  1342.  
  1343.          Runs well when infected.
  1344.  
  1345.     Checkup
  1346.  
  1347.          Runs as well when infected as when not infected --
  1348.          poorly.
  1349.  
  1350.     CRCDOS
  1351.  
  1352.          Runs well when infected.
  1353.  
  1354.     Delouse
  1355.  
  1356.          Runs well when infected.
  1357.  
  1358.     The Detective
  1359.  
  1360.          Runs well when infected.
  1361.  
  1362.     F-Prot
  1363.  
  1364.          F-OSCHK reports that it has been infected. F-XLOCK
  1365.          reports that it has been infected, and hangs the
  1366.          system.
  1367.  
  1368.     FICHECK
  1369.  
  1370.          Runs well when infected. Includes an option to
  1371.          self-check for virus infection. The self-check works.
  1372.          After a few moments, it will report "Error - This
  1373.          program has been altered or tampered with!" However,
  1374.          the user must invoke this option deliberately and
  1375.          manually.
  1376.  
  1377.     Module Integrity Check
  1378.  
  1379.          Runs well when infected.
  1380.  
  1381.     Novirus
  1382.  
  1383.          Runs well when infected.
  1384.  
  1385.     SSCRC
  1386.  
  1387.          Runs well when infected.
  1388.  
  1389.     Validate
  1390.  
  1391.          Runs well when infected.
  1392.  
  1393.     VCheck
  1394.  
  1395.          Runs well when infected.
  1396.  
  1397.     VirusGuard
  1398.  
  1399.          Runs well when infected.
  1400.  
  1401.  
  1402.  
  1403.                        VENDOR INFORMATION
  1404.  
  1405.  
  1406.  
  1407.     o  Alert. Version 2.20, available from the NCSA BBS as
  1408.          ALERT220.ZIP. Also available from Robert W. Reed,
  1409.          3858 Waterview Loop, Winter Park, FL 32792. Price:
  1410.          $25 each for 1-10 licensees.
  1411.  
  1412.     o  The Antibody Test, version 1.03B. Available from
  1413.          the NCSA BBS as ANTIBODY.ZIP. Also available at
  1414.          no charge from Commander, TRADOC, ATTN: ATIS-S
  1415.          (Major Richard W. Adams), Ft. Monroe, VA
  1416.          23651-5000.
  1417.  
  1418.     o  BSearch. "If you find BSearch of value, a contribution
  1419.          of $10 would be helpful." Available from the NCSA
  1420.          BBS as BSEARCH.ZIP, or from David Harris, POB
  1421.          2058, El Paso, TX 79951.
  1422.  
  1423.     o  CHKSUM is available from the NCSA BBS in a file
  1424.          called CHKSUM.ZIP. It is also available from its
  1425.          author, Bob Taylor, 8602 Woodlake Drive, Richmond,
  1426.          VA 23229. The author does not request a contribution.
  1427.          The package includes C source code. 
  1428.  
  1429.     o  Checkup v. 3.9 (Levin) "This is not free software.
  1430.          You are granted a limited license to evaluate this
  1431.          program for ten days in your home or office. If you
  1432.          continue to use this program, you must register with
  1433.          the author. Registration fees are $24.95 per copy for
  1434.          home users and $49.95 per copy for office users."
  1435.          Available from the NCSA BBS as CHKUP39.ZIP or
  1436.          from Richard B. Levin, POB 14546, Philadelphia, PA
  1437.          19115.
  1438.  
  1439.     o  CRCDOS version 1.0. Available from the NCSA BBS
  1440.          as CRCDOS.ZIP. This ZIP file includes C source
  1441.          code. Written by R.E. Faith, January 11, 1988.
  1442.          Released to the public domain, on condition that no fee
  1443.          be charged for distribution, that authorship information
  1444.          concerning source and any modifications will be
  1445.          retained, and that the code is not included as part of a
  1446.          commercial package.
  1447.  
  1448.     o  Delouse version 0.9 Available from the NCSA BBS as
  1449.          DELOUSE.ZIP. Written by Phillip M. Nickell, February
  1450.          28, 1988. Includes Pascal source code. No fee is
  1451.          requested. No copyright is taken. Appears to be public
  1452.          domain. Thanks, Mr. Nickell!
  1453.  
  1454.     o  The Detective version 1.2 Available from the NCSA
  1455.          BBS as DETECT.ZIP. "The free version of The
  1456.          Detective is expressly prohibited for use in commercial,
  1457.          educational, and governmental institutions except for
  1458.          the purpose of evaluation." The price per computer, if
  1459.          you choose to register, is $25 for 1-50 computers, and
  1460.          less with more. You may order the current version from
  1461.          PC Solutions, POB 742, Mequon, WI 53092. (414)
  1462.          241-9119. The shareware version, distributed via
  1463.          bulletin boards, is unable to process files in the root
  1464.          directory.
  1465.  
  1466.     o  F-Prot, version 1.12, is available from the NCSA's BBS
  1467.          as FPROT112.ZIP. Version 1.12 of this package
  1468.          contains a large number of extremely useful anti-virus
  1469.          tools. From the standpoint of the present review, only
  1470.          two are relevant, however: F-XLOCK (which permits all
  1471.          programs to check for CRC changes as they are
  1472.          executed) and F-OSCHK (which checks the partition
  1473.          table, boot record, two hidden system files, and
  1474.          COMMAND.COM) F-Prot is available from Fridrik
  1475.          Skulason, Box 7180, IS-127 Reykjavik, Iceland. Pricing:
  1476.          Skulason suggests $15 for 1-7 computers, and lower
  1477.          payments on larger volumes.
  1478.  
  1479.     o  FICHECK, version 5.0, comes bundled with
  1480.          MFICHECK 5.0 and PROVECRC ver 1.0. It may be
  1481.          downloaded from the NCSA BBS as FICHECK5.ZIP. It
  1482.          is available from the author, Chuck Gilmore, Gilmore
  1483.          Systems, POB 3831, Beverly Hills, CA 90212-0831.
  1484.          Pricing: "A 30 day trial period is granted. Afterward,
  1485.          you may either order one of the commercial versions or
  1486.          destroy the evaluation copies." Two commerical
  1487.          versions are available: XFICHECK (eXtended
  1488.          FICHECK) for $15 and PFICHECK (Professional
  1489.          FICHECK) for $20.
  1490.  
  1491.     o  Module Integrity Check, version 1.0, is available
  1492.          from the NCSA BBS in a file called MIC10.ZIP.
  1493.          Pricing: "This program may be used by anyone free of
  1494.          charge... Anyone who finds this program of value is
  1495.          encouraged to make a voluntary donation to the
  1496.          author... Even if you do not make a donation you are
  1497.          still free to use this program as you see fit." Author:
  1498.          Steve Leonard, 260 Dunbar Road, Hilton, NY 14468.
  1499.  
  1500.     o  Novirus version 3.0, accompanied by documentation
  1501.          for version 2.0, is available in a file called
  1502.          NOVIRUS3.ZIP on the NCSA BBS. It is also available
  1503.          from the Interconnect BBS, 703-827-5762. Author:
  1504.          Jeffrey Morley. Price: free.
  1505.  
  1506.     o  SSCRC, version 1.4, is available in a file called
  1507.          SSCRC.ZIP from the NCSA BBS. Pricing: "If you use
  1508.          this utility to protect your system, do the right thing
  1509.          and send us $10", says the author. It is available from
  1510.          OSR, 561 Blaxland Road, Eastwood, 2122, NSW,
  1511.          Australia.
  1512.  
  1513.     o  Validate, version 0.3, is available in a file called
  1514.          VALIDAT3.ZIP from the NCSA BBS. It is also
  1515.          available at no charge from Computer Virus Industry
  1516.          Association, 4423 Cheeney St., Santa Clara, CA 95054.
  1517.          (408)-727-4559. Price: free.
  1518.  
  1519.     o  VCheck, version 1.1E, is available in a file called
  1520.          VCHECK.ZIP on the NCSA BBS. Pricing: "If you use
  1521.          VCHECK, send a registration of $25 to
  1522.          Systemberatung Axel Dunkel, Robert-Schuman-Ring
  1523.          37, D 6239 Kriftel, West Germany."
  1524.  
  1525.     o  VirusGuard. 
  1526.  
  1527.  
  1528.  
  1529.                         SOME OBSERVATIONS
  1530.  
  1531.  
  1532.  
  1533. Once again, the correlation between price and value is upset.
  1534. Many of our highest scoring packages were the cheapest. 
  1535.  
  1536. We note also the contradiction betwen our ratings and those
  1537. published elsewhere. The documentation accompanying Checkout
  1538. notes that the product is Compute!'s PC Magazine Editors choice
  1539. for virus protection, is the featured virus detection system in
  1540. Dvorak and Anis' "Dvorak's Guide to PC Telecommunications",
  1541. etc. We found it at the bottom of our scoring system. You may
  1542. wish to review our ratings of this product.
  1543.  
  1544.  
  1545.  
  1546.                  OTHER EVALUATION CONSIDERATIONS
  1547.  
  1548.  
  1549.  
  1550. We did not compare products on the following items, but you
  1551. may wish to:
  1552.  
  1553.     o  Can the program work on files with hidden, system,
  1554.          read-only attributes.
  1555.  
  1556.     o  Can the program work from floppy disk? This is
  1557.          valuable if you wish to use the program to monitor
  1558.          another user's machine, for instance, to see if they are
  1559.          clandestinely running a golf game that is not on the
  1560.          approved corporate software list. It is also valuable for
  1561.          guarding against stealth viruses.
  1562.  
  1563.     o  Can the program produces separate lists of deleted
  1564.          files, added files, and changed files? Separate lists may
  1565.          have benefits over a massive list of changes.
  1566.  
  1567.     o  Do you have control over whether the program updates
  1568.          its baseline database? If the program updates this
  1569.          everytime it is run, you will lose your history file.
  1570.  
  1571.  
  1572.  
  1573.                              +++++ 
  1574.  
  1575.